Computer Follies

Steven Dutch, Natural and Applied Sciences, Universityof Wisconsin - Green Bay
First-time Visitors: Please visit Site Map and Disclaimer. Use"Back" to return here.


A Note to Visitors

I will respond to questions and comments as time permits, but if you want to take issuewith any position expressed here, you first have to answer this question:

What evidence would it take to prove your beliefs wrong?

I simply will not reply to challenges that do not address this question. Refutabilityis one of the classic determinants of whether a theory can be called scientific. Moreover,I have found it to be a great general-purpose cut-through-the-crap question to determinewhether somebody is interested in serious intellectual inquiry or just playing mind games.Note, by the way, that I am assuming the burden of proof here - all youhave to do is commit to a criterion for testing.It's easy to criticize science for being "closed-minded". Are you open-mindedenough to consider whether your ideas might be wrong?


What was Wrong with BASIC?

Nothing. It was proven a long time ago that any possible series of operations could be performed by a computer that allowed branching and looping. Old fashioned line-number BASIC had these operations (as do all computer languages) and therefore every conceivable computer program could be written in line-number BASIC. I have never seen, and do not think there can be, a mathematical operation I could not perform with old-fashioned line-number BASIC. I wrote programs that did Bessel Functions and fractals using it. If you are more mathematically advanced than that, talk to me. Otherwise you have nothing to say.

A lot of the snobbery directed against BASIC came from the name and from the fact that the B stood for Beginner’s (All-Purpose Symbolic Instruction Code). If it had been called BEAST for Brutally Effective All-Purpose Sissy Terminator, most of the nasty remarks directed against BASIC would not have been made.

BASIC did have some shortcomings, but they stemmed mostly from shortcomings in the computers of the time, not from any defects inherent in the language itself. In an age when memory was scarce, the language needed to be very spare. A lot of the criticism stemmed from the GOTO statement, which, it was claimed, fostered the development of “spaghetti code” – programs that jumped back and forth and were impossible to follow. This was a real problem, but it had three main causes:

  1. A weak IF-THEN syntax, which only allowed you to jump to a certain line if the condition was fulfilled. The vast majority of GOTO statements I ever wrote were due to the weakness of the IF-THEN statement. When it became possible to write IF-(condition)-THEN-(do this), my production of GOTO’s dropped by about 90 per cent. When we got IF-(condition)-THEN-(do this)-ELSE-(do that), my production of GOTO’s dropped even more. And when it became possible to write multi-line IF-THEN statements, terminated by the END IF statement, my use of GOTO all but ceased.
  2. Lousy or nonexistent text editors. A lot of GOTO’s got written simply because renumbering programs was so cumbersome. The ability to renumber program lines easily meant you no longer had to squeeze code into vacant slots between numbers, or tacked on to the end of your code. Reusable code? Give me a decent text editor and watch me reuse BASIC code. I did it all the time.
  3. Idiots. A lot of people were sitting at computers who had no business doing anything more sophisticated than pushing a broom. The language COBOL (Common Business Oriented Language), for example, tried to force users to document their programs. It seems never to have occurred to anyone that people who don’t document their programs have no business in business or using a computer. People who don’t plan their work out should be doing something more suited to their talents, like painting rocks, or mowing grass with a ruler and a pair of scissors. I argued that students should have to pass a year of calculus with a B or better before being allowed to touch a computer.

Surely the most absurd response to the GOTO problem, displaying a true let’s-lower-the-river-instead-of-raising-the-bridge spirit, was Pascal. This Wirthless language was developed by Nicklaus Wirth as his solution to the GOTO problem. When I heard Pascal being touted as the latest and greatest, I checked it out. Did it have more mathematical functions? Nope. Built-in equation solving? Nope. Better graphics commands? You have to be kidding. It did - are you sitting down? - allow you to indent program lines. Wow. All I had to do was learn a new language and I could indent my program lines. Since I didn’t write spaghetti code, I saw nothing in Pascal I couldn’t do just as well in BASIC.

One thing Pascal did have, after the dust settled, was, guess what? The GOTO statement, because sometimes you simply have to break out of a program. After all his pontificating about GOTO, Wirth was not able to eliminate it.

Lately I’ve been using Visual BASIC. It’s okay, although I have yet to find a decently written book on it. If you have a candidate, see how long it takes you to find the answer to this question. If you use the system default beige screen, and you attempt to draw something using Drawmode 7 (that allows you to draw and erase objects on the screen) it doesn’t work and the results are downright bizarre. What do you have to do to get correct results? I finally figured it out after a couple of days of trial and error and thinking hard about bits, so I know the answer. But before you tout some book as the greatest reference ever on Visual BASIC, see if you can find the answer there.

The nice thing about Visual BASIC is that it’s very easy to install user controls like buttons on the screen and resize them. It’s event-driven. Essentially, each control is a subroutine and all the stuff that used to follow a dummy INPUT statement in old-fashioned BASIC now goes into the code for the subroutine. It’s a different kind of logic. The ability to re-format user controls is nice, but really, it could have been done easily in old-fashioned BASIC. All you’d need is a command BUTTON (label,left,top-right,bottom) to create the button, and a command IF BUTTON-label THEN… to respond to it. The label option would allow the program to recognize different buttons.

The event-driven syntax is a mixed blessing. For many applications it’s great. For others, it makes things worse. In old-fashioned BASIC, you could pause for user action simply by inserting an INPUT statement, so the program would stop until the user hit a key. If all you want is a momentary halt, Visual BASIC is a step down, because everything after the code either has to go into the subroutine corresponding to the control, or you have to have some flag that responds to the control and then does something. If you want to have the program respond either to a mouse click or to a key press, it starts getting complicated. Jumping from one control subroutine to the next can be as confusing as the worst spaghetti code ever written.

Virtually every "shortcoming" of BASIC is due not to problems in the language but to failure to implement upgrades to keep pace with technology.There's nothing I do in Visual Basic I couldn't do just as well with line-number Basic if it had better access to input devices (like the mouse) and ability to access the complete graphics capability of the screen.

Bad Design

For the amazing things they can do, computers have to be among the worst-designed devices ever made by man.Start with peripherals. Plug and Play and USB (Universal Serial Bus) ports are far too little, far too late. Once it became obvious that peripheral devices were going to proliferate, the standard design for every computer should have included a bank of identical ports on the back. Lots of them – a 4x6 bank could be quite compact. Any peripheral plugs into any port, at any time. The user should never have to concern himself about where the device is plugged, should not have to worry about damaging anything by adding or removing something while the power is on, and should never, ever have to get involved in setting device interrupts, jumper pins, or the like. The user should never, ever have to reboot the computer for a newly-installed device to operate.

Surely the Nobel Prize for stupidity has to go to the people who design disk operating systems. How many viruses do their dirty work by reformatting the hard drive or destroying the boot sectors or File Allocation Table? Why? Because this incredibly stupid design concept of having the entire disk utterly dependent on a single small portion of it was frozen into computers early on and stays there to this day.

First, why should you ever have to format a disk at all? You don’t have to format audio or video tapes. Technically, you do, but that happens automatically while the tape is running. So why can’t computers do the same thing?

Second, if you damage the file allocation table on a disk, why can’t you simply read the rest of the disk and reconstruct the files? You should be able to walk on a floppy disk with golf shoes and recover all the information except that part that was actually physically destroyed.You should be able to break a CD, glue it back together, and read everything except the crack.

CD’s take the stupidity one step further. Here we have a brand-new technology, capable of learning from the mistakes of the past, and instead CD’s use the same ridiculous system as any other computer disk. How many people have had the frustrating experience of making a “coaster” – a disk where all the information is copied, only to have the whole thing fail because the final writing of the file allocation table fails? Scratch the surface of a record (they were like CD’s, only bigger, and had a smaller hole) and you get a pop when it plays, scratch the wrong spot on a CD and the whole thing may be useless.CD’s are potentially indestructible, or nearly so. The laser reads them optically, so scratches should be of little concern. In fact, scratches should be well-nigh undetectable because the computer could simply prolong whatever sound is being played until it once again got readable data. You wish. CD’s are actually more vulnerable to skipping than records ever were. I’ve had CD’s skip because of scratches that wouldn’t even result in an audible click with a phonograph.

Hacker's Heaven

Is it just me, or does every "improvement" in Windows seem calculated to make life easier for hackers? For example, it's impossible to delete a file if it's being used. This "protects" you from crashing a program. It also protects writers of intrusive software by enabling them to have several programs accessing a file at once, making it impossible to delete an intrusive file unless you first ferret out all the programs that are using it.

Once upon a time MS-DOS had a file called AUTOEXEC.BAT that listed all the steps your computer took to boot up. This made it far too easy for a user to eliminate unwanted programs.


Return to Pseudoscience Index
Return to Professor Dutch's Home Page

Created 18 November 2004,  Last Update 24 May, 2020

Not an official UW Green Bay site